﻿/**********************************************************************
 * @file   GUIGeometrySolidDialog.h
 * @brief  几何创建体(封闭面)创建界面类
 * @author yangjing (1195810980@qq.com)
 * @date   2025-02-20
 *********************************************************************/
#ifndef GUIGEOMETRYSOLIDDIALOG_H
#define GUIGEOMETRYSOLIDDIALOG_H

#include <QDialog>
#include "GUIGeometryBaseDialog.h"
QT_BEGIN_NAMESPACE
namespace Ui { class GUIGeometrySolidDialog; }
QT_END_NAMESPACE


namespace Interface
{
    class FITKAbsGeoModelClosedSurfaceSolid;
}

namespace GUI {
    /**
    * @brief 创建几何体（封闭面构体）窗口
    * @author yangjing (1195810980@qq.com)
    * @date 2025-02-20
    */
    class GUIGeometryDialogAPI GUIGeometrySolidDialog : public GUIGeometryBaseDialog
    {
        Q_OBJECT

    public:
        /**
        * @brief 创建的构造函数
        * @param[i]  oper           operators
        * @author yangjing (1195810980@qq.com)
        * @date 2025-02-11
        */
        GUIGeometrySolidDialog(Core::FITKActionOperator* oper, QWidget* parent = nullptr);
        /**
         * @brief 编辑的构造函数
         * @param[i]  obj            My Param doc
         * @param[i]  oper           My Param doc
         * @author yangjing (1195810980@qq.com)
         * @date 2025-02-11
         */
        GUIGeometrySolidDialog(Interface::FITKAbsGeoModelClosedSurfaceSolid* obj, Core::FITKActionOperator* oper, QWidget* parent = nullptr);
        /**
        * @brief 析构函数
        * @author yangjing (1195810980@qq.com)
        * @date 2025-02-11
        */
        ~GUIGeometrySolidDialog();
    private:
        /**
        * @brief init
        * @author yangjing (1195810980@qq.com)
        * @date 2025-02-12
        */
        void init() override;
        /**
        * @brief    拾取完成操作器,点击后，触发
        * @return   void
         * @author yangjing (1195810980@qq.com)
         * @date 2025-02-12
        */
        virtual void pickFinishedOper() override;

        /**
         * @brief 从界面获取数据，更新到数据对象中
         * @author yangjing (1195810980@qq.com)
         * @date 2025-02-12
         */
        virtual void getDataFormWidget()override;


        /**
        * @brief    拾取过程中触发,用于计算拾取到面数
        * @return   void
        * @author yangjing (1195810980@qq.com)
        * @date 2025-02-19
        */
        virtual void OnpickInProcess() override;
    private slots:
        /**
        * @brief    确定按钮响应
        * @return   void
        * @author yangjing (1195810980@qq.com)
        * @date 2025-02-19
        */
        void on_pushButton_OK_clicked();

        /**
        * @brief    取消按钮响应
        * @return   void
        * @author yangjing (1195810980@qq.com)
        * @date 2025-02-19
        */
        void on_pushButton_Cancel_clicked();

        /**
        * @brief    选择按钮响应
        * @return   void
        * @author yangjing (1195810980@qq.com)
        * @date 2025-02-19
        */
        void on_pushButton_Pick_clicked();
    private:
        Ui::GUIGeometrySolidDialog *_ui = nullptr;
    };
}
#endif // GUIGEOMETRYSOLIDDIALOG_H
